.\" chrt(1) manpage
.\"
.\" Copyright (C) 2004 Robert Love
.\" Copyright (C) 2015 Karel Zak <kzak@redhat.com>
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License,
.\" version 2, as published by the Free Software Foundation.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License along
.\" with this program; if not, write to the Free Software Foundation, Inc.,
.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.TH CHRT 1 "January 2016" "util-linux" "User Commands"
.SH NAME
chrt \- manipulate the real-time attributes of a process
.SH SYNOPSIS
.B chrt
[options]
.IR priority\ command\  [ argument ...]
.br
.B chrt
[options]
.B \-p
.RI [ priority ]\  pid
.SH DESCRIPTION
.B chrt
sets or retrieves the real-time scheduling attributes of an existing \fIpid\fR,
or runs \fIcommand\fR with the given attributes.

.SH POLICIES
.TP
\fB\-o\fR, \fB\-\-other\fR
Set scheduling policy to \fBSCHED_OTHER\fR (time-sharing scheduling).
This is the default Linux scheduling policy.
.TP
\fB\-f\fR, \fB\-\-fifo\fR
Set scheduling policy to \fBSCHED_FIFO\fR (first in-first out).
.TP
\fB\-r\fR, \fB\-\-rr\fR
Set scheduling policy to \fBSCHED_RR\fR (round-robin scheduling).
When no policy is defined, the
.B SCHED_RR
is used as the default.
.TP
\fB\-b\fR, \fB\-\-batch\fR
Set scheduling policy to \fBSCHED_BATCH\fR (scheduling batch processes).
Linux-specific, supported since 2.6.16.  The priority argument has to be set to zero.
.TP
\fB\-i\fR, \fB\-\-idle\fR
Set scheduling policy to \fBSCHED_IDLE\fR (scheduling very low priority jobs).
Linux-specific, supported since 2.6.23.  The priority argument has to be set to zero.
.TP
.BR \-d ,\  \-\-deadline
Set scheduling policy to \fBSCHED_DEADLINE\fR (sporadic task model deadline scheduling).
Linux-specific, supported since 3.14.  The priority argument has to be set to zero.
See also \fB\-\-sched\-runtime\fR, \fB\-\-sched\-deadline\fR and
\fB\-\-sched\-period\fR.  The relation between the options required by the kernel is
runtime <= deadline <= period.
.B chrt
copies \fIperiod\fR to \fIdeadline\fR if \fB\-\-sched\-deadline\fR is not specified and
\fIdeadline\fR to \fIruntime\fR if \fB\-\-sched\-runtime\fR is not specified.
It means that at least \fB\-\-sched\-period\fR has to be specified.  See
.BR sched (7)
for more details.

.SH SCHEDULING OPTIONS
.TP
\fB\-T\fR, \fB\-\-sched\-runtime\fR \fInanoseconds\fR
Specifies runtime parameter for SCHED_DEADLINE policy (Linux-specific).
.TP
\fB\-P\fR, \fB\-\-sched\-period\fR \fInanoseconds\fR
Specifies period parameter for SCHED_DEADLINE policy (Linux-specific).
.TP
\fB\-D\fR, \fB\-\-sched\-deadline\fR \fInanoseconds\fR
Specifies deadline parameter for SCHED_DEADLINE policy (Linux-specific).
.TP
\fB\-R\fR, \fB\-\-reset-on-fork\fR
Use
.B SCHED_RESET_ON_FORK
or
.B SCHED_FLAG_RESET_ON_FORK
flag.  Linux-specific, supported since 2.6.31.

Each thread has a reset-on-fork scheduling flag.  When this flag is set, children created by
.BR fork (2)
do not inherit privileged scheduling policies.  After the reset-on-fork flag has been enabled,
it can be reset only if the thread has the
.BR CAP_SYS_NICE
capability.  This flag is disabled in child processes created by
.BR fork (2).

More precisely, if the reset-on-fork flag is set,
the following rules apply for subsequently created children:
.RS
.IP * 3
If the calling thread has a scheduling policy of
.B SCHED_FIFO
or
.BR SCHED_RR ,
the policy is reset to
.BR SCHED_OTHER
in child processes.
.IP *
If the calling process has a negative nice value,
the nice value is reset to zero in child processes.
.RE



.SH OPTIONS
.TP
.BR \-a ,\  \-\-all-tasks
Set or retrieve the scheduling attributes of all the tasks (threads) for a
given PID.
.TP
.BR \-m ,\  \-\-max
Show minimum and maximum valid priorities, then exit.
.TP
.BR \-p ,\  \-\-pid
Operate on an existing PID and do not launch a new task.
.TP
.BR \-v ,\  \-\-verbose
Show status information.
.TP
.BR \-V ,\  \-\-version
Display version information and exit.
.TP
.BR \-h ,\  \-\-help
Display help text and exit.
.SH USAGE
.TP
The default behavior is to run a new command:
.B chrt
.I priority
.IR command\  [ arguments ]
.TP
You can also retrieve the real-time attributes of an existing task:
.B chrt \-p
.I pid
.TP
Or set them:
.B chrt \-r \-p
.I priority pid
.SH PERMISSIONS
A user must possess
.B CAP_SYS_NICE
to change the scheduling attributes of a process.  Any user can retrieve the
scheduling information.

.SH NOTES
Only
.BR SCHED_FIFO ,
.B SCHED_OTHER
and
.B SCHED_RR
are part of POSIX 1003.1b Process Scheduling.  The other scheduling attributes
may be ignored on some systems.
.P
Linux' default scheduling policy is
.BR SCHED_OTHER .
.SH AUTHORS
.UR rml@tech9.net
Robert Love
.UE
.br
.UR kzak@redhat.com
Karel Zak
.UE
.SH SEE ALSO
.BR nice (1),
.BR renice (1),
.BR taskset (1),
.BR sched (7)
.sp
See
.BR sched_setscheduler (2)
for a description of the Linux scheduling scheme.
.SH AVAILABILITY
The chrt command is part of the util-linux package and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
